/* Автоматическое сохранение и восстановление регистров */

#pragma savereg- 		// Выключим автоматическое сохранение регистров

/* Функция обработки прерывания по переполнению Таймера/Счетчика0 */
interrupt [7] void overflow_timer0(void)
{
/* теперь сохраним только те регистры, которые используются
программами в обработчике, например R22, R23 и SREG */
/* Этот кусок написан на ассемблере */
#asm
push r22
push r23
in r22,SREG
push r22
#endasm
/* Здесь располагается код Cи обработчика прерывания */
...
/* теперь восстановим SREG, R23 и R22 */
/* Этот кусок написан на ассемблере */
#asm
pop r22
out SREG,r22
pop r23
pop r22
#endasm
}

/* снова разрешим автоматическое сохранение и восстановление регистров 
   для других обработчиков прерываний */
#pragma savereg+
